PROGRAM PASBIDON
!
implicit none
DOUBLE PRECISION eps, alpha, beta, c, h, nu, a, b, dt, T
INTEGER, PARAMETER :: Nf = 499
INTEGER, PARAMETER :: n = 1000
INTEGER, PARAMETER :: nbIterMax = 1000000
DOUBLE PRECISION, PARAMETER :: seuilResidu = 1.0D-6
DOUBLE PRECISION, DIMENSION(n*n)::u ! Vecteur u
! Choix pour la methode non temporelle ou temporelle
INTEGER choix
!
! Initialisation des parametres
T = 1.0
! Le pas temporelle a determiner de maniere judicieuse
h = 1.0/(n+1)
dt = T/(Nf+1)
PRINT *, 'Choisissez votre methode : 0 non temporelle ; 1 temporelle' ; READ *, choix
!
! Methodes non temporelles
IF (choix .EQ. 0) THEN
	PRINT *, '---------------------------------------------------------------------'
	PRINT *, ''
	PRINT *, '      Programme de test des méthodes de Jacobi et Gauss-Seidel       '
	PRINT *, ''
	PRINT *, '---------------------------------------------------------------------'
	!
	PRINT *, 'Veuillez entrer un espilon : ' 
	READ *, eps
	PRINT *, 'Veuillez entrer un alpha : ' 
	READ *, alpha
	PRINT *, 'Veuillez entrer un beta : ' 
	READ *, beta
	PRINT *, 'Veuillez entrer un c : ' 
	READ *, c
	!
	! Appel des méthodes	
	PRINT *, '---------------------------------------------------------------------'
	WRITE(*,*) 'Methode Jacobi'
	CALL JACOBI(n,n,eps,h,alpha,beta,c,seuilResidu,nbIterMax,u)
	!
	PRINT *, '---------------------------------------------------------------------'
	PRINT *, 'Méthode de Gauss-Seidel'
	CALL GAUSSSEIDEL(n,n,eps,h,alpha,beta,c,seuilResidu,nbIterMax,u)
	!
	PRINT *, '---------------------------------------------------------------------'
	PRINT *, 'Fin des tests : si vous êtes arrivés jusqu ici, le test a des chances d avoir fonctionné '
	PRINT *, '---------------------------------------------------------------------'
	!
! Methodes temporelles
ELSE
	PRINT *, 'Veuillez entrer un nu : ' ; READ *, nu
	PRINT *, 'Veuillez entrer un a : ' ; READ *, a
	PRINT *, 'Veuillez entrer un b : ' ; READ *, b
	WRITE(*,*) 'Méthode d Euler explicite : bientôt sur vos écrans !'
	CALL EULER(n,Nf,nu,h,dt,a,b,c,seuilResidu,nbIterMax,u)
	!
	WRITE(*,*) 'Méthode de Crank-Nicholson explicite : bientôt sur vos écrans !'
	!Call CRANKNICHOLSON(n,Nf,nu,h,dt,a,b,c,seuilResidu,nbIterMax,u)
	!
ENDIF
END PROGRAM PASBIDON
